有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Log4j文件已创建但为空

尝试了其他问题的答案,但无法解决问题

我有配置log4j的xml文件。创建了两个日志文件,但文件为空。我无法写入文件

这是我的xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="ErrorAPPENDER" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="D://Error.log" /> <param name="Append" value="true" /> <param name="DatePattern" value="'.'yyyy-MM-dd" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd,HH:mm:ss},%m%n" /> </layout> </appender> <appender name="EventAPPENDER" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="D://Event.log" /> <param name="Append" value="true" /> <param name="DatePattern" value="'.'yyyy-MM-dd" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd,HH:mm:ss},%m%n" /> </layout> </appender> <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%m%n" /> </layout> </appender> <logger name="Event" additivity="false"> <level value="debug" /> <appender-ref ref="EventAPPENDER" /> </logger> <logger name="Error" additivity="false"> <level value="debug" /> <appender-ref ref="ErrorAPPENDER" /> </logger> <root> <priority value="debug" /> <appender-ref ref="ConsoleAppender" /> </root> </log4j:configuration>

这是初始化类

package com.mobios.common;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class Log4JUtil {

    public static final Logger logger=   Logger.getLogger(Log4JUtil.class);

}

这就是我写日志的方式

Log4JUtil.logger.getLogger("ErrorAPPENDER").error("sdsffd");

但没有写入日志文件。我看不出任何错误,我尝试了其他问题中提到的解决方案


共 (1) 个答案

  1. # 1 楼答案

    在迄今为止初始化的所有记录器中,记录器始终由唯一的名称标识

    伐木。getLogger(Log4jUtil.class)创建一个名为“com.mobios.common.Log4jUtil”(Log4jUtil.class.getName())的记录器,或返回一个已创建的具有该名称的记录器 https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Logger.html#getLogger(java.lang.Class)

    在你的log4j里。xml文件,您尚未创建任何名为“com.mobios.common.Log4jUtil”的记录器。您创建了名为“事件”、“错误”的记录器

    您可以在log4j中添加一个部分。使用“com.mobios.common.Log4jUtil”创建xml文件,并向其中添加“事件”和“错误”处理程序,以便将其记录到相应的文件中

    <logger name="com.mobios.common.Log4jUtil" additivity="false">
        <level value="debug" />
        <appender-ref ref="EventAPPENDER" />
        <appender-ref ref="ErrorAPPENDER" />
    </logger>
    

    记录时,不需要再次使用getLogger()调用来记录消息。 在你的日志里。同学们,你们可以简单地做

    logger.error("sdsffd")
    

    在其他类中,如果您想使用Log4jUtil中的记录器。同学们,你们能行 Logger.getLogger(Log4JUtil.class)这将返回一个已实例化的记录器,其中附加了处理程序

    package com.mobios.common;
    
    import org.apache.log4j.Logger;
    
    public class AnotherClass {
    
        public static final Logger logger=   Logger.getLogger(Log4JUtil.class);
    
    }